package br.com.easyrhour3x.main.cadastrar;

import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import br.com.easyrhour3x.model.Solicitacao;
import br.com.easyrhour3x.model.Usuario;

public class UsuarioTableModel extends AbstractTableModel {

	private static final long serialVersionUID = 1L;
	private List<Usuario> usuarioTable = new ArrayList<>();
	private int qtdColumn;

	public UsuarioTableModel(List<Usuario> lista, int qtdColumn) {
		usuarioTable.removeAll(usuarioTable);
		if (lista != null) {
			usuarioTable.addAll(lista);
		}
		this.qtdColumn = qtdColumn;
	}

	@Override
	public int getRowCount() {
		return usuarioTable.size();
	}

	@Override
	public int getColumnCount() {
		return qtdColumn;
	}

	@Override
	public String getColumnName(int column) {
		switch (column) {
		case 0:
			return "ID";
		case 1:
			return "Nome";
		}
		return null;
	}

	@Override
	public Class<String> getColumnClass(int columnIndex) {
		return String.class;
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		Usuario t = usuarioTable.get(rowIndex);
		switch (columnIndex) {
		case 0:
			return t.getIdusuario() + "";
		case 1:
			return t.getNome();
		}
		return null;
	}

	@Override
	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
		Usuario t = usuarioTable.get(rowIndex);
		switch (columnIndex) {
		case 0:
			t.setIdusuario(Integer.parseInt(aValue.toString()));
			break;
		case 1:
			t.setNome(aValue.toString());
		}
		fireTableDataChanged();
	}

	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex) {
		return false;
	}

	public void alterar(int count, Usuario t) {
		usuarioTable.set(count, t);
		fireTableDataChanged();
	}

	public void inserir(Usuario t) {
		usuarioTable.add(t);
		fireTableDataChanged();
	}

	public void excluir(Solicitacao p) {
		usuarioTable.remove(p);
		fireTableDataChanged();
	}

	public void deleteAndGo(List<Usuario> lista) {
		usuarioTable.removeAll(usuarioTable);
		usuarioTable.addAll(lista);
		fireTableDataChanged();
	}

	public Usuario getValue(int pos) {
		if (pos < 0 || pos >= usuarioTable.size()) {
			return null;
		}
		return usuarioTable.get(pos);
	}

}
